【書評】「プロを目指す人のためのTypeScript入門」 TypeScript をこれから勉強したい人にも、これまで使ってきた人にもおすすめの一冊
こんにちは。CX事業本部MAD事業部のYui(@MayForBlue)です。
自分のGWの課題図書にしていた「プロを目指す人のためのTypeScript入門 安全なコードの書き方から高度な型の使い方まで」(技術評論社)を読み終えて、とてもよい本だと感じたので感想を書評としてまとめました。
書籍情報
著者
鈴木 僚太(すずき りょうた) さん ( Twitter: @uhyo_ )
2013年からTypeScriptを使用中。LINE株式会社でフロントエンドエンジニアとして自社開発に従事しながら、技術顧問なども行っている(本書発行当時)。専門はTypeScriptとReactで、講演やインターネット上での記事公開を通じて初心者向けから上級者向けまでさまざまな情報を発信している。OSS活動にも積極的だが自作のライブラリはあまり流行っていない。
目次
- 第1章 イントロダクション
- 第2章 基本的な文法・基本的な型
- 第3章 オブジェクトの基本とオブジェクトの型
- 第4章 TypeScriptの関数
- 第5章 TypeScriptのクラス
- 第6章 高度な型
- 第7章 TypeScriptのモジュールシステム
- 第8章 非同期処理
- 第9章 TypeScriptのコンパイラオプション
各章の概要
第1章 イントロダクション
第1章では TypeScript がどのような特徴をもった言語であるかや、なぜ / どのように TypeScript が生まれたのかという経緯が紹介されています。 また JavaScript (または ECMAScript )とどのような関係をもっているのか、TypeScript の立ち位置もこの章で学べます。
以降の章でのサンプルコード実行のための環境構築についてもこの章で解説されています。
第2章 基本的な文法・基本的な型
第2章では TypeScript を書いていく上で基本となる変数宣言や演算、基本的な制御構文について学びます。
ここで「文」と「式」というキーワードが出てきます。
TypeScriptプログラミングの第一歩は、文と式の違いを理解することです。
普段コードを書いていてもこの「文」と「式」を意識することがほとんどなかったので、あらためて意識するきっかけになりました。
null と undefined の扱いについてもこの章で学びます。
第3章 オブジェクトの基本とオブジェクトの型
TypeScript を使う上で重要な概念であるオブジェクトの特徴やオブジェクトを扱う場合に注意・考慮すべきポイントをしっかり学べる章です。
TypeScript を理解する上でこちらも重要な「部分型」についてもしっかり解説されています。
TypeScript における配列の扱い方についてもこの章で学びます。
また、TypeScript を使いはじめると迷いがちな interface 宣言 と type 文の使い分けや、インデックスシグネチャや配列のインデックスアクセスにおける危険性に言及されている点もよかったです。
第4章 TypeScriptの関数
この章では TypeScript における関数の基本的な使い方や宣言方法、関数の型について学びます。
前章で解説された「部分型」について、関数の返り値や引数の型での考え方も解説されています。
関数を書き方によるふるまいの違いについてもこの章でしっかり学ぶことができます。
型引数を持つ関数(ジェネリック関数)のユースケースや使い方についても解説されています。
第5章 TypeScriptのクラス
第5章ではクラスの概念や役割、使い方を学びます。
プロパティやメソッドの宣言、コンストラクタや型はもちろん、クラスの継承やアクセシビリティ修飾子( public / protected / private )の概念や動作についても詳しく解説されています。
また、TypeScript ( or JavaScript )を使う上で重要な概念のひとつである this についてもこの章で詳しく学ぶことができます。
例外処理についてもこの章で解説されています。
第6章 高度な型
第6章では、前章までで学んだプリミティブ型やオブジェクト型から進んで応用的な型について学んでいきます。
ユニオン型やインターセクション型、リテラル型などの型の扱い、ユースケースを学ぶことができ、型の表現を広げることができます。
この章では特に any の扱いについて言及されている部分が重要かつしっかり身につけておきたい内容だと感じました。
本書の中では any型は
TypeScriptにおいて最凶の危険性を誇る機能
と紹介されていますが、その any がなぜ存在していて any を安易に使うことがなぜ問題なのかをきちんと知ることができます。
そしてこの章を読み進めることでどうすれば any を回避できるかを学ぶことができます。
第7章 TypeScriptのモジュールシステム
第7章ではモジュールを扱う際に必須の、変数や型のインポート・エクスポートや Node.js のモジュールシステムについて学びます。
また、npm や package.json, package-lock.json の役割や扱いについても学びます。
第8章 非同期処理
第8章では非同期処理について、そもそも非同期処理とは何か、TypeScript ではどのように扱われるのかといった根本的なところから学ぶことができます。
個人的にはこの章がとてもわかりやすいのが印象的でした。
非同期処理は最初につまづきやすいポイントのひとつだと思いますが、本書では非同期処理をどう書くのかだけではなく、TypeScript の実行モデルから解説があることで、非同期処理が実行されているときにプログラムがどのように制御されているのかというイメージが掴みやすくなっています。
第9章 TypeScriptのコンパイラオプション
第9章では、tsconfig.json で設定できるコンパイラオプションの種類や、特に「strictオプション」と呼ばれる重要なオプションについてどのような機能なのか、なぜ有効化すべきなのかといった内容が学べます。
感想
文章が読みやすい
この本を読みはじめてまず最初に思ったのはとにかく「文章が読みやすい!」ということです。
あまり技術書を読んだ感想っぽくはないのですが、一文一文が簡潔で頭にスッと入ってくるので読んでいてストレスがなく、読み進めるのが楽しみでした。
TypeScript を使ってきた人にもおすすめ
おさえている内容が網羅的かつ、実際にコードを書く際に迷ったりハマりやすいポイントについて重点的に解説されているため、これまで自分が書いてきたコードを思い浮かべたり見比べながら読むことで新たな学びがありました。 (私自身は TypeScript 歴1年弱ほどです。)
また、コラムもおもしろく、本章の解説の発展的な内容や、「これってどうなんだろう?」と疑問に思うポイントが解説されていて、かゆいところに手が届く内容でした。
タイトルに「入門」と入っていますが、これまで TypeScript を使って開発したことがある人でも新たな発見ができそうで、おすすめできる一冊だと感じました。
また、全体を通してとてもよい本だと感じた理由が、似ている機能や複数の選択肢がある実装方法などについて筆者の推奨の方法とその理由が示されているところです。
リファレンスや教科書のような使い方としてだけでなく、言語を熟知した方の意見や考え方を知れるのはとても貴重でその点だけでも読む価値があると感じました。
このブログを読んで気になった方はぜひ一度お手に取ってみてはいかがでしょうか。
以上、CX事業本部MAD事業部のYui(@MayForBlue)でした。